home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib16.dsk
/
SORT AND PRINT FOOD LIST.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
3KB
|
85 lines
1 REM **********************
2 REM * SORT AND PRINT *
3 REM * BY D.R. PENDERGAST *
4 REM * COPYRIGHT (C) 1984 *
5 REM * BY MICROSPARC, INC *
6 REM * LINCOLN, MA. 01773 *
7 REM **********************
100 REM **SORT AND PRINT
102 D$ = CHR$(4):BC$ = CHR$(2):G$ = CHR$(7): GOTO 12000
104 REM **SUBROUTINES BELOW **
275 REM **OPEN FILES TO READ**
280 PRINT D$"OPEN ";FILE$",L";RL
285 PRINT D$"READ";FILE$",R";RX
290 RETURN
314 REM **SUBROUTINES ABOVE **
320 REM **READ RECORD AND FIELD LENGTH DATA. NOTE HIDDEN CTRL B ADDED TO FILE NAME**
325 PRINT D$"OPEN";FILE$ +BC$
330 PRINT D$"READ";FILE$ +BC$
335 INPUT NF: INPUT RL: DIM T$(2 *NF),TV(NF),P$(NF)
340 FOR K = 1 TO NF: INPUT T$(K): INPUT TV(K): NEXT K
345 PRINT D$"CLOSE"FILE$ +BC$
350 RETURN
355 REM **OPEN FILES TO READ**
360 PRINT D$"OPEN ";FILE$",L";RL
365 PRINT D$"READ";FILE$",R0"
370 RETURN
375 REM **PRINT PAGE HEADING**
380 PRINT "NO.";: HTAB 12: PRINT "FOOD";: HTAB 27: PRINT "NO.";: POKE 36,39: PRINT "FOOD";: POKE 36,54: PRINT "NO.";: POKE 36,66: PRINT "FOOD"
385 PRINT
390 PP = PP +1:BL = 0
395 RETURN
400 REM **PRINTER ON**
405 HOME : PRINT : PRINT "ENTER IN PRINTER SLOT #";G$: INPUT SLOT
425 PRINT D$"PR#";SLOT: PRINT CHR$(9);"80N"
430 RETURN
435 REM **PRINT FOOD DATA LINES**
440 PRINT RX(1);: HTAB 5: PRINT P$(1);: HTAB 27: PRINT RX(2);: HTAB 31: PRINT P$(2);: POKE 36,54: PRINT RX(3);: POKE 36,58: PRINT P$(3)
445 RETURN
1200 REM **SORT ROUTINE**
1205 DIM SRT$(REC),SO(REC)
1210 SF = 1:S1 = 1
1215 HOME : VTAB 10: HTAB 16: FLASH : PRINT "SORTING": NORMAL : VTAB 20: PRINT "** COPYRIGHT 1984 BY MICROSPARC, INC. **": VTAB 10: HTAB 23
1220 PRINT D$"OPEN"FILE$",L";RL
1225 FOR K = 1 TO REC:RX = K: GOSUB 285: IF SF = 1 THEN 1235
1230 FOR L = 1 TO SF -1: INPUT Z$: NEXT L
1235 INPUT SRT$(K):SO(K) = K: NEXT K
1240 PRINT D$"CLOSE"FILE$
1245 M = 1
1250 M = 3 *M +1: IF M <REC THEN 1250
1255 M = (M -1)/3: IF M <1 THEN 1275
1260 FOR J = M +1 TO REC:LL = J -M:SS$ = SRT$(J):S = SO(J)
1265 IF S1 = (SRT$(LL) >SS$) THEN SRT$(LL +M) = SRT$(LL):SO(LL +M) = SO(LL):LL = LL -M: IF LL >0 THEN 1265
1270 SRT$(LL +M) = SS$:SO(LL +M) = S: NEXT J: GOTO 1255
1275 REM SORTED LIST COMPLETE
1280 RETURN
1290 REM **SUBROUTINES ABOVE**
2050 GOSUB 1200
12000 TEXT : REM *PRINT USER FOOD LIST*
12010 HOME :FILE$ = "FOOD": GOSUB 320:RX = 0: GOSUB 275: INPUT REC
12020 PRINT D$"CLOSE";FILES$
12030 TEXT : HOME
12050 GOSUB 1205
12060 TEXT : HOME : VTAB 10: HTAB 5: PRINT "MEMORY REMAINING = ": VTAB 10: HTAB 24: PRINT FRE(8);: PRINT " BYTES": FOR K = 1 TO 2000: NEXT K
12070 GOSUB 400
12080 PP = 1:SP = 1:BL = 1
12090 FOR K = 1 TO 6: PRINT : NEXT K
12100 GOSUB 375
12110 BL = 1
12120 PRINT D$;"OPEN";FILE$",L";RL
12130 K4 = REC/3:K5 = INT(REC/3): IF (K5 <K4) THEN K4 = K5 +1
12140 FOR K1 = 1 TO K4
12150 FOR K2 = 1 TO 3:K3 = ((3 *(K1 -1) +K2)): IF (K3 >REC) THEN GOTO 12180
12160 RX(K2) = SO(K3)
12170 PRINT D$;"READ";FILE$",R";RX(K2): INPUT P$(K2)
12180 NEXT K2
12190 GOSUB 435
12200 FOR K2 = 1 TO 3:P$(K2) = " ": NEXT K2
12210 IF SP = 5 THEN PRINT :SP = 0
12220 IF BL = 40 THEN PRINT : POKE 36,59: PRINT "CONTINUED NEXT PAGE": FOR K = 1 TO 14: PRINT : NEXT K: GOSUB 375
12230 SP = SP +1:BL = BL +1
12240 NEXT K1
12250 PRINT D$;"CLOSE";FILE$
12260 PRINT D$;"PR#0"
12270 HOME : VTAB 10: FLASH : PRINT "LOADING 'NIBBLE DINER'": NORMAL
12280 PRINT D$;"RUN NIBBLE DINER"